#ifndef LISTENSCAPA_H
#define LISTENSCAPA_H

#include "ListCapa.h"

#include <vector>

/**
 * Classe qui gère les ensembles de capacités raciales. Cela permet
 * d'avoir au même endroit le nom, le coût de l'ensemble, ainsi que
 * les capacités raciales incluses et la liste des éléments dont
 * l'état est gelé lors de la sélection d'un tel ensemble.
 *
 * Pour le moment, toutes les races sont telles que un ensemble racial
 * ne peut être modifié, c'est pourquoi la méthode exclus() renvoie
 * également un pointeur sur Membre.
 *
 * @author Johan "Solo" Luisier
 */
class ListEnsCapa : public ListCapa
{
 public:
  ListEnsCapa(const std::string& nom, const unsigned int& prix,
	      const std::vector< unsigned int >& membres);
  ListEnsCapa(const std::string& nom, const unsigned int& prix,
	      const std::vector< unsigned int >& membres,
	      const std::vector< unsigned int >& exclus);
  ListEnsCapa(const ListEnsCapa& lsEnsCapa);
  ~ListEnsCapa();
  const ListEnsCapa& operator=(const ListEnsCapa& lsEnsCapa);
  const std::vector< unsigned int >* membres() const;
  const std::vector< unsigned int >* exclus() const;
 protected:
  /**
   * Conteneur des numéros des capacités comprises dans l'ensemble.
   */
  std::vector< unsigned int > Membres;
  /**
   * Conteneur des capacités "gelées" lors du choix de l'ensemble
   * (pour éviter de trafiquer un ensemble).
   */
  std::vector< unsigned int > Exclus;
};

#endif // LISTENSCAPA_H
